package xyz.sekai52799.answer.a1201_a1400;

import java.lang.reflect.MalformedParameterizedTypeException;
import java.util.HashMap;
import java.util.Map;

public class Question1252 {

//    给你一个 m x n 的矩阵，最开始的时候，每个单元格中的值都是 0。
//
//    另有一个二维索引数组indices，indices[i] = [ri, ci] 指向矩阵中的某个位置，其中 ri 和 ci 分别表示指定的行和列（从 0 开始编号）。
//
//    对 indices[i] 所指向的每个位置，应同时执行下述增量操作：
//
//    ri 行上的所有单元格，加 1 。
//    ci 列上的所有单元格，加 1 。
//    给你 m、n 和 indices 。请你在执行完所有indices指定的增量操作后，返回矩阵中 奇数值单元格 的数目。
//
//    来源：力扣（LeetCode）
//    链接：https://leetcode.cn/problems/cells-with-odd-values-in-a-matrix
//    著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

    // 有一个规律，单数操作次的行与行数相乘，单数操作次数的列与列数相乘，减去两个乘积的2倍，就是最终答案
    public int oddCells(int m, int n, int[][] indices) {
        int[] row = new int[n];
        int[] column = new int[m];

        for (int[] index : indices) {
            row[index[1]]++;
            column[index[0]]++;
        }

        int rowSize = 0;
        int columnSize = 0;

        for (int temp : row){
            if (temp % 2 == 1){
                rowSize++;
            }
        }
        for (int temp : column){
            if (temp % 2 == 1){
                columnSize++;
            }
        }
        return (rowSize * m) + (columnSize * n) - (2 * rowSize * columnSize);
    }
}
